home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / news / inn1.000 / inn1.4sec-linux-src.tar / inn / lib / nonblocking.c < prev    next >
C/C++ Source or Header  |  1993-03-18  |  823b  |  56 lines

  1. /*  $Revision: 1.6 $
  2. **
  3. */
  4. #include "configdata.h"
  5.  
  6.  
  7. #if    defined(NBIO_IOCTL)
  8. #include <sys/ioctl.h>
  9.  
  10. /*
  11. **  Enable or disable non-blocking I/O mode.
  12. */
  13. int
  14. SetNonBlocking(fd, flag)
  15.     int        fd;
  16.     BOOL    flag;
  17. {
  18.     int        state;
  19.  
  20.     state = flag ? 1 : 0;
  21.     return ioctl(fd, FIONBIO, (char *)&state);
  22. }
  23.  
  24. #endif    /* defined(NBIO_IOCTL) */
  25.  
  26.  
  27. #if    defined(NBIO_FCNTL)
  28. #include <sys/types.h>
  29. #include <sys/file.h>
  30. #include <fcntl.h>
  31.  
  32. #if    !defined(FNDELAY)
  33. #define FNDELAY        O_NDELAY
  34. #endif    /* !defined(FNDELAY) */
  35.  
  36.  
  37. /*
  38. **  Enable or disable non-blocking I/O mode.
  39. */
  40. int
  41. SetNonBlocking(fd, flag)
  42.     int        fd;
  43.     BOOL    flag;
  44. {
  45.     int        mode;
  46.  
  47.     if ((mode = fcntl(fd, F_GETFL, 0)) < 0)
  48.     return -1;
  49.     if (flag)
  50.     mode |= FNDELAY;
  51.     else
  52.     mode &= ~FNDELAY;
  53.     return fcntl(fd, F_SETFL, mode);
  54. }
  55. #endif    /* defined(NBIO_FCNTL) */
  56.